import Vue from 'vue'



// *****************************************************************枚举值过滤*****************************************************************
// 图片
Vue.filter('filterImageName', value => {
  let returnToObj = {
    'vin': 'VIN码',
    'right_rear': '右后',
    'driving_seat': '驾驶座椅',
    'control_booth': '控制室',
    'odograph': '里程表',
    'left_anterior': '左前（首图）',
    'open_trunk': '打开后备箱',
    'engine_bay': '发动机全景',
    'right_side': '右侧',
    'tyre': '轮胎',
    'insurance': '保单',
    'registration_license': '登记证',
    'vehicle_license': '行驶证',
    'gear_lever': '变速挡杆',

    //抵押图片
    'pledge_vehicle_license': '行驶证',
    'pledge_registration_license': '登记证',
    'pledge_keys': '车钥匙',
    'pledge_invoice': '发票',
    'pledge_insurance': '保单',
    'pledge_duty_paid': '完税凭证',

  }
  return returnToObj[value] || '-'
})

// 库存状态
Vue.filter('filterCarStockState', value => {
  let returnToObj = {
    0: '未入库',
    1: '驳回',
    2: '撤销',
    10: '入库中',
    20: '已入库',
    30: '出库中',
    40: '已出库'
  }
  return returnToObj[~~value] || '-'
})

// 检测状态
Vue.filter('filterCarDetectState', value => {
  let returnToObj = {
    500: '未初检',
    510: '初检不通过',
    520: '初检通过',
    530: '申请复检中',
    540: '复检完成'
  }
  return returnToObj[~~value] || '-'
})

// 检测结果状态
Vue.filter('filterCarDetect', value => {
  let returnToObj = {
    0: '发起',
    10: '已派单',
    20: '已检测',
    30: '总部审核'
  }
  return returnToObj[~~value] || '-'
})


// 上架状态
Vue.filter('filterCarSaleState', value => {
  let returnToObj = {
    0: '未上架',
    10: '上架中',
    20: '已上架',
    30: '已下架',
  }
  return returnToObj[~~value] || '-'
})

// 抵押状态
Vue.filter('filterCarPledgeState', value => {
  let returnToObj = {
    300: '未抵押',
    310: '已抵押'
  }
  return returnToObj[~~value] || '无抵押状态'
})

// 在场状态
Vue.filter('filterCarSiteState', value => {
  let returnToObj = {
    400: '未入场',
    410: '已入场',
    420: '出场审核中',
    430: '出场审核通过',
    440: '已出场'
  }
  return returnToObj[~~value] || '无出场状态'
})

// 认证状态
Vue.filter('filterCarAuthState', value => {
  let returnToObj = {
    0: '未认证',
    10: '已认证',
  }
  return returnToObj[~~value] || '-'
})

// 是否上牌
Vue.filter('filtercarLicenceState', value => {
  let returnToObj = {
    1: '已上牌',
    2: '未上牌',
    3: '新车'
  }
  return returnToObj[~~value] || '-'
})

//预定状态
Vue.filter('filterCarOrderState', value => {
  let returnToObj = {
    0: '未预定',
    1: '已预定',
  }
  return returnToObj[~~value] || '-'
})

// 付款类型
Vue.filter('filterSalePayType', value => {
  let returnToObj = {
    1: '现款',
    2: '按揭',
  }
  return returnToObj[~~value] || '-'
})

// 销售类型
Vue.filter('filterSaleType', value => {
  let returnToObj = {
    1: '批发',
    2: '直销',
    3: '拍卖'
  }
  return returnToObj[~~value] || '-'
})

// 代办保险
Vue.filter('filterSaleInsuranceState', value => {
  let returnToObj = {
    1: '代办',
    0: '不代办'
  }
  return returnToObj[~~value] || '-'
});



// 车商状态
Vue.filter('filteShopState', value => {
  let returnToObj = {
    0: '无效',
    1: '有效',
  }
  return returnToObj[~~value] || '-'
});

//合同状态
Vue.filter('filteContractState', value => {
  let returnToObj = {
    0: '无效',
    1: '生效',
    2: '执行中',
    3: '结束',
    4: '意外中止',
  }
  return returnToObj[~~value] || '暂无状态'
});

//区域状态
Vue.filter('filterRotationState', value => {
  let returnToObj = {
    0: '无效',
    1: '有效'
  }
  return returnToObj[~~value] || ''
});

// 区域类型
Vue.filter('filteRegionType', value => {
  let returnToObj = {
    1: '按面积',
    2: '按车位',
  }
  return returnToObj[~~value] || ''
});

// 区域单位
Vue.filter('filteRegionUnit', value => {
  let returnToObj = {
    1: '平米',
    2: '个',
  }
  return returnToObj[~~value] || ''
});

// 用户状态
Vue.filter('filteUserState', value => {
  let returnToObj = {
    0: '冻结',
    1: '正常',
  }
  return returnToObj[~~value] || '暂无状态'
});

// 用户角色
Vue.filter('filteUserType', value => {
  let returnToObj = {
    1: '超级管理员',
    10: '总公司管理员',
    11: '总公司审核员',
    13: '发票录入员',
    30: '市场管理员',
    31: '市场员工',
    32: '市场检测员',
    40: '车商',
    41: '车商员工'
  }
  return returnToObj[~~value] || '暂无角色'
});


// 是否置顶
Vue.filter('filterNoticeTop', value => {
  let returnToObj = {
    0: '否',
    1: '是',
  }
  return returnToObj[~~value] || '无'
});


// 公告状态
Vue.filter('filterNoticeState', value => {
  let returnToObj = {
    0: '无效',
    1: '正常',
  }
  return returnToObj[~~value] || '暂无状态'
});

// 来源
Vue.filter('filterCooperationSource', value => {
  let returnToObj = {
    'android': '安卓',
    'crm': 'crm后台',
    'erp': 'erp后台',
    'iOS': '苹果',
    'website': '官网',
    'wx': '微信'
  }
  return returnToObj[~~value] || ''
});

// 来源状态
Vue.filter('filterCooperationState', value => {
  let returnToObj = {
    0: '未处理',
    1: '已处理'
  }
  return returnToObj[~~value] || ''
});

// 使用性质
Vue.filter('filterPurpose', value => {
  let returnToObj = {
    1: '营运',
    2: '非营运',
    3: '营转非'
  }
  return returnToObj[~~value] || ''
});

//区域状态
Vue.filter('filterIsOrNo', value => {
  let returnToObj = {
    0: '否',
    1: '是'
  }
  return returnToObj[~~value] || ''
});

//车辆审核状态
Vue.filter('filterCarStateValue', value => {
  let returnToObj = {
    1: '驳回',
    10: '车辆入库申请',
    20: '同意',
    0: '入库申请'
  }
  return returnToObj[~~value] || ''
});


// 车辆审核结果
Vue.filter('filterCarStateresult', value => {
  let returnToObj = {
    0: '未审核',
    1: '未通过',
    20: '通过'
  }
  return returnToObj[~~value] || ''
});


// 保养情况
Vue.filter('filterCarKeepState', value => {
  let returnToObj = {
    0: '是4s店保养',
    1: '不是4s店保养'
  }
  return returnToObj[~~value] || ''
});

// *****************************************************************字段过滤*****************************************************************

// 车辆价格过滤 加万元
Vue.filter('filterPrice', value => {
  if (typeof(value) == typeof(0) || typeof(value) == typeof('0')) {
    return ~~value === 0 ? '面议' : value + '万元' 
  }else{
    return '面议'
  }
});



// *****************************************************************日期过滤*****************************************************************

// 日期过滤公共方法
function handleDate (format, value = '') {
  let [_type, _date] = [format, new Date(value)]
  return _type
    .replace(/(y{4})/, _date.getFullYear())
    .replace(/(M{2})/, () => _date.getMonth() < 9 ? '0' + (_date.getMonth() + 1) : (_date.getMonth() + 1).toString())
    .replace(/d{2}/, () => _date.getDate() < 10 ? '0' + (_date.getDate()) : _date.getDate().toString())
    .replace(/H{2}/, () => _date.getHours() < 10 ? '0' + (_date.getHours()) : _date.getHours().toString())
    .replace(/m{2}/, () => _date.getMinutes() < 10 ? '0' + (_date.getMinutes()) : _date.getMinutes().toString())
    .replace(/s{2}/, () => _date.getSeconds() < 10 ? '0' + (_date.getSeconds()) : _date.getSeconds().toString())
}

//英文格式
// 过滤时间格式（yyyy）
Vue.filter('filterDateForYear',value => handleDate('yyyy',value))
// 过滤时间格式（yyyy-MM）
Vue.filter('filterDateForMonth',value => handleDate('yyyy-MM',value))
// 过滤时间格式（yyyy-MM-dd）
Vue.filter('filterDateForDay',value => handleDate('yyyy-MM-dd',value))
// 过滤时间格式（yyyy-MM-dd HH:mm:ss）
Vue.filter('filterDateForSec',value => handleDate('yyyy-MM-dd HH:mm:ss',value))

//中文格式
// 过滤时间格式（yyyy年）
Vue.filter('filterChDateForYear',value => handleDate('yyyy年', value))
// 过滤时间格式（yyyy年MM月）
Vue.filter('filterChDateForMonth',value =>  handleDate('yyyy年MM月', value))
// 过滤时间格式（yyyy年MM月dd日）
Vue.filter('filterChDateForDay',value => handleDate('yyyy年MM月dd日', value))
// 过滤时间格式（yyyy年MM月dd日 HH:mm:ss）
Vue.filter('filterChDateForSec',value => handleDate('yyyy年MM月dd日 HH:mm:ss', value))


// 时间（与当前时间对比）yyyy-mm-dd
Vue.filter('filterDatefavorite', function (value) {
  let currentTime = new Date()
  let finalTime = Date.parse(currentTime) - value
  if (finalTime > 0 && finalTime < 8640000) {
    return `${parseInt(finalTime / 360000)}小时前`
  } else if (finalTime > 8640000 && finalTime < 8640000 * 2) {
    return `一天前`
  } else if (finalTime > 8640000 * 2 && finalTime < 8640000 * 3) {
    return `两天前`
  } else {
    return handleDate('yyyy-MM-dd', value)
  }
})

// 日期小于1天
Vue.filter('filterExpireDay', function (value){
    var today = parseInt(value) - new Date().getTime();
    var days = today / (1000 * 3600 * 24)
    return today >= 0 ? parseInt(days+1)+'天' : '已过期'
})









